LNMP之Yum方式安装

1. 实验环境

本实验是在CentOS7版本上面进行的,所以实验环境是CentOS7的64位机器。

2. 配置YUM源

根据YUM的特性,我们可以通过yum命令来非常方便的安装LNMP环境。

2.1. 更新系统的YUM源

CentOS7的默认YUM源里的软件包版本可能不是最新的,如果要安装最新的软件包就得配置下YUM源。

配置YUM源可以通过直接安装RPM包,或者修改Repository,本篇学习笔记讲解通过安装RPM包的方式来进行配置。

首先需要安装EPEL的YUM源,用以解决部分依赖包不存在的问题:

1
yum install -y epel-release

2.2. 添加MySQL的YUM源

MySQL官网给出了配置教程,因为本文实验用的是CentOS7,所以我们只需要安装对应的RPM包就行了。

安装RPM包前需要导入RPM-GPG-KEY文件,不然安装过程会出错。将MySQL RPM-GPG-KEY另存为mysql_pubkey.asc,并导入:

1
rpm --import mysql_pubkey.asc

导入后安装CentOS7的MySQL RPM包:

1
rpm -Uvh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2.3. 添加PHP的YUM源

PHP最新的RPM包,可以使用Remi’s RPM repository

导入PHP RPM-GPG-KEY(remi):

1
rpm --import http://rpms.remirepo.net/RPM-GPG-KEY-remi

安装PHP RPM(remi)包:

1
rpm -Uvh http://remi.mirrors.arminco.com/enterprise/remi-release-7.rpm

2.4. 添加Nginx的YUM源

Nginx官网也给出了配置教程。

可以在这Nginx RPM-GPG-KEY导入Nginx RPM-GPG-KEY包:

1
rpm --import http://nginx.org/packages/keys/nginx_signing.key

安装Nginx RPM包:

1
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2.5. YUM源最后的配置和调整

到此,YUM源已经安装好了,但是还得进行最后的配置和调整。

MySQL的YUM源默认启用的是MySQL-5.6版本,PHP的YUM源默认都没有启用,Nginx的YUM源默认启用的是Nginx-1.8版本。

定位到/etc/yum.repos.d/目录下面,对后缀为.repo的文件进行编辑,修改enabled1启用。示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@AmingLinux-105 ~]# cd /etc/yum.repos.d
[root@AmingLinux-105 yum.repos.d]# ll
总用量 72
-rw-r--r-- 1 root root 1664 8月 18 2017 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 8月 18 2017 CentOS-CR.repo
-rw-r--r-- 1 root root 649 8月 18 2017 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root 314 8月 18 2017 CentOS-fasttrack.repo
-rw-r--r-- 1 root root 630 8月 18 2017 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 8月 18 2017 CentOS-Sources.repo
-rw-r--r-- 1 root root 2893 8月 18 2017 CentOS-Vault.repo
-rw-r--r-- 1 root root 957 12月 28 2016 epel.repo
-rw-r--r-- 1 root root 1056 12月 28 2016 epel-testing.repo
-rw-r--r-- 1 root root 1209 1月 29 2014 mysql-community.repo
-rw-r--r-- 1 root root 1060 1月 29 2014 mysql-community-source.repo
-rw-r--r-- 1 root root 113 7月 15 2014 nginx.repo
-rw-r--r-- 1 root root 456 1月 16 15:06 remi-php54.repo
-rw-r--r-- 1 root root 1314 1月 16 15:06 remi-php70.repo
-rw-r--r-- 1 root root 1314 1月 16 15:06 remi-php71.repo
-rw-r--r-- 1 root root 1314 1月 16 15:06 remi-php72.repo
-rw-r--r-- 1 root root 2605 1月 16 15:06 remi.repo
-rw-r--r-- 1 root root 750 1月 16 15:06 remi-safe.repo

启用PHP-7.0的示例:

  • 修改/etc/yum.repos.d/remi.repo,将[remi][remi-test]下面的enabled=0改为enabled=1
  • 修改/etc/yum.repos.d/remi-php70.repo,将[remi-php70]下面的enabled=0改为enabled=1
  • 示例操作如下:
    1
    2
    3
    sed -i "/remi\/mirror/{n;s/enabled=0/enabled=1/g}" /etc/yum.repos.d/remi.repo
    sed -i "/test\/mirror/{n;n;s/enabled=0/enabled=1/g}" /etc/yum.repos.d/remi.repo
    sed -i "/php70\/mirror/{n;s/enabled=0/enabled=1/g}" /etc/yum.repos.d/remi-php70.repo

到这异步YUM配置就算全部完成了,清除并生成YUM缓存使之生效:

1
2
yum clean all
yum makecache


3. 安装MySQL+PHP+Nginx+phpMyAdmin

YUM源配置好了后,现在直接安装MySQL+PHP+Nginx+phpMyAdmin,命令如下:

1
2
3
4
5
yum install -y mysql-community-server \
nginx php php-bcmath php-fpm php-gd php-json \
php-mbstring php-mcrypt php-mysqlnd php-opcache \
php-pdo php-pdo_dblib php-pgsql php-recode php-snmp \
php-soap php-xml php-pecl-zip phpMyAdmin

注意:上面安装的php-*可以根据实际使用情况选择安装。


安装完成后,进行下一步的环境配置,MySQL的配置文件在/etc/my.conf.d/,PHP的配置文件在/etc/php-fpm.d/,Nginx的配置文件在/etc/nginx/,phpMyAdmin的配置文件在/etc/phpMyAdmin/


4. 配置MySQL

MySQL配置文件保持默认即可,运行一次安全配置即可。

启动MySQL:

1
systemctl start mysqld.service

安全配置MySQL:设置root密码、删除匿名用、禁止root远程登陆、删除test数据库、重新加载权限表,一路Y下去

1
mysql_secure_installation


5. 配置PHP

PHP默认配置文件使用的是监听9000端口进行通信,针对小型单一、没有做负载均衡的服务器,可以使用unix sock方式通信。

使用unix sock方式需要修改PHP配置文件:

1
2
3
4
5
6
7
8
#更换监听方式
listen = /dev/shm/php-fpm-default.sock
#监听队列最大长度为不限
listen.backlog = -1
#指定监听用户和用户组(需存在)
listen.owner = www
listen.group = www

启动php-fpm

1
systemctl start php-fpm.service


6. 配置Nginx

让服务器默认访问显示为400提示页。

1
2
3
4
#新建名为 nginx-default.conf 的配置文件
touch /etc/nginx/conf.d/nginx-default.conf
#编辑配置文件
vi /etc/nginx/conf.d/nginx-default.conf

将以下信息输入到nginx-defualt.conf中:

1
2
3
4
5
server
{
listen 80 default;
return 400;
}

保存退出后,再进行防火墙放行HTPP端口访问:

1
2
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

启动Nginx:

1
systemctl start nginx.service

这时,在浏览器地址栏输入当前服务器IP就会看到一个400的提示页面了。

7. Nginx的进阶配置

这一节是进阶的配置,内容有:绑定域名、站点目录、保存日志、运行PHP的配置文件。

配置如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# vim /etc/nginx/conf.d/default.conf
server
{
listen 80; #监听80端口
server_name default.com www.default.com; #绑定域名 default.com 和 www.default.com
index index.html index.htm index.php; #设置首页文件,越前优先级越高
charset utf-8; #设置网页编码
root /home/wwwroot/default; #设置站点根目录
#运行 PHP
location ~ .*\.php$
{
fastcgi_pass 127.0.0.1:9000 #默认使用9000端口和PHP通信
#fastcgi_pass unix:/dev/shm/php-fpm-default.sock; #使用 unix sock 和PHP通信
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /home/wwwroot/default; #PHP 文档根目录
fastcgi_param SCRIPT_FILENAME /home/wwwroot/default$fastcgi_script_name; #PHP 脚本目录
include fastcgi_params;
try_files $uri = 404;
}
#设置文件过期时间
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$
{
expires 30d;
}
#设置文件过期时间
location ~ .*\.(js|css)$
{
expires 12h;
}
#设置文件访问权限
location ~* /templates(/.*)\.(bak|html|htm|ini|old|php|tpl)$ {
allow 127.0.0.1;
deny all;
}
#设置文件访问权限
location ~* \.(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ {
deny all;
}
#保存日志
access_log /var/log/nginx/default-access.log main;
error_log /var/log/nginx/default-error.log crit;
}


到此,以YUM方式搭建LNMP的环境就完成了。接下来的工作便是优化一下其中各个组件的配置等。


0%